Some conventional graphics processing schemes include dividing a graphics surface into a plurality of pixels, each pixel representing the smallest dimension or block of information of the graphics surface. Typically, a pixel comprises discrete portions or components representative of the color, transparency, hue, saturation, brightness, chrominance, luminance, intensity, and/or other visual parameters. For example, an RGB pixel is based on an additive color model and comprises portions corresponding to red, green, and blue channel(s). In other examples, an RGBA pixel is based on an additive color model and comprises portions corresponding respectively to red, green, blue, and alpha channels, where the alpha channel represents the transparency of the pixel. In yet other examples, a CMYK pixel is based on a subtractive color model and comprises portions corresponding respectively to cyan, magenta, yellow, and black channels. In other examples, a HSV pixel is based on a transformed RBG color model, where each pixel comprises portions corresponding respectively to hue, saturation, and value channels.
In some conventional digital graphics processes, each channel of a pixel may be represented by or discretized into a digital value. In some examples, a 32-bit RGBA pixel may comprise 8 binary bits for each of a red color component (or channel), a green color component (or channel), a blue color component (or channel), and an alpha channel. In such examples, each channel can be partitioned into one of 256 (or 2^8) values. In other examples, a 32-bit RGBA pixel may comprise 10 binary bits for each of a red color component, a green color component, and a blue color component, and two bits for an alpha channel. In such examples, each of the red, green, and blue channels can be partitioned into one of 1024 values, and the alpha channel can be partitioned into one of four transparency percentage values.
Some conventional graphics processing devices include a pixel memory for storing individual pixels of the graphics surface. When it is desired to perform a mathematical operation on the contents of a pixel, the pixel is generally first read from pixel memory into a memory of the graphics processor, which performs the mathematical operation. Generally, the transformed and/or modified pixel is then written back to pixel memory, or in the case where the pixel is to be displayed on a monitor or other display device, written to a memory associated with the monitor. When a mathematical operation is to be simultaneously performed on more than one pixel of the graphics surface, each pixel is generally read first, before the operation can occur. Thus, some conventional graphics processing devices further divide the graphics surface into a plurality of tiles, each tile representing one or more adjacent pixels. For example, a tile may represent a block of four pixels—two pixels wide by two pixels high. In other examples, a tile may represent a block of sixty four pixels—eight pixels wide by eight pixels high.
Referring to the illustration of FIG. 1, a conventional graphics surface 10 can be divided into M*N tiles, each tile Ti,j of which may be representative of one or more pixels. Typically, each tile represents the same number of pixels. For example, each tile may represent 64 pixels. However, it is possible that different tiles in the surface 10 may represent different numbers of pixels.
As shown in the illustration of FIG. 2, a conventional tile 20 can represent J*K pixels, each pixel Pm,n of which may have discrete portions or components representative of visual parameters (e.g., definitional color model channels). Typically, the same definitional color model (e.g., set of possible visual parameter values) applies to each pixel of a graphics surface. However, it is possible that different definitional color models may apply to different pixels.
Referring to the illustration of FIG. 3, in some implementations, a conventional pixel 30 (e.g., Pm,n) can include a red color channel 31, a green color channel 33, a blue color channel 35, and an alpha channel 37. In some digital examples, each of channels 31, 33, 35, and 37 may have the same number of bits, while in other examples, the various channels may have the same or different numbers of bits.
Some conventional graphics processing schemes are not optimized to perform efficient operations on a graphics surface. For example, a conventional graphics surface may have a resolution of 1920 pixels wide by 1080 pixels high and use 32-bit RGBA color model. The graphics surface may be divided into 32,000 tiles, wherein each tile is 8 pixels wide by 8 pixels high. Referring then together to the illustrations of FIGS. 1-3, the graphics surface 10 may be divided into 240 tiles wide by 135 tiles high (i.e., M=240, N=135), each tile 20 being 8 pixels wide by 8 pixels high (i.e., J=8, K=8), and each pixel 30 having 8 bits for each of a red channel 31, green channel 33, blue channel 35, and alpha channel 37. It is to be appreciated that the memory access for a single pixel is 4 Bytes (i.e., 32 bits), that the memory access for one tile (or 64 pixels) is 256 Bytes, and that the memory access for the entire surface (or 32,000 tiles) is 8 MB.
Depending on the graphics surface, it may be common for one or more tiles to have pixels having the same value. For example, each pixel of a tile may be colored red. In some conventional graphics processing schemes, regardless of whether the individual pixels have the same value, the entire tile must be read from, or written to, pixel memory. Thus, for example, although there may be only 4 Bytes of unique information (corresponding to the value of the red pixel), the size of the memory access is still 256 Bytes. Extending the example further, if a graphics surface having a solid color is to be stored in pixel memory, some conventional graphics processing schemes would require a memory access of the full 8 MB. By inefficiently reading and/or writing to pixel memory, system throughput is non-optimal and energy consumption may be unnecessarily high.